
function getNum(arg,p){
        
    //检验是否合法  先存进去在检验
    //以逗号分隔输入
    if(arg.length==3){
        p=arg[2].split(',');
    }else{ //以空格分隔
        for(var i=2;i<arg.length;i++){
            p.push(arg[i]);
        }
    }

    for(var i=0;i<p.length;i++){//否则p中存的是字符
        if(!isLegal(p[i],p)){
            console.log('数据不合法！');
            return false;//有return false才不会继续执行
        }else{
            p[i]=Number(p[i]);
        }
    }

    //检查和为1
    if(sum(p)!==1){
        console.log('概率空间不封闭');
        return false;
    }
     return true;
}


function sum(p) {
    // return p.reduce((total, pi) => {//求和
    //   return roundFractional(total + Number(pi), 2);
    // }, 0);
    
    var num=0;
    for(var i=0;i<p.length;i++){
        num+=p[i];
    }
    return num;
  }

//检验每一项的合法性
function isLegal(data,p){
    if(isNaN(Number(data))) {
        console.log('请输入数字！');        
        return false; 
    } 
    if(Number(data) < 0) {
        console.log('请输入大于 0 的数！'); 
         return false; 
        } 
    if(Number(data) > 1) {
        console.log('请输入小于 1 的数！');
        return false; 
    } 
    if(sum(p) > 1) { 
        console.log('概率和超过了 1！');    
        return false; 
    }
    return true;
}

//计算信源熵
function entropy(p){ 
    return p.reduce((total,pi)=>{
      return total - pi*Math.log2(pi);
    },0);
}


module.exports={
    getNum,
    sum, 
    isLegal, 
    entropy
};